package com.dalaoli.Controller;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.alibaba.excel.read.builder.ExcelReaderSheetBuilder;
import com.dalaoli.entity.BondedImportOrder;
import com.dalaoli.listener.OrderListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.Controller
 * @email yangyang@dalaoyang.cn
 * @date 2018/4/9
 */
@Controller
public class IndexController {

    private static final Logger log = LoggerFactory.getLogger(FileController.class);

    @RequestMapping("/")
    public String index() {
        return "upload";
    }

    @RequestMapping("/preupload")
    public String preupload() {
        return "/preupload";
    }

    @RequestMapping("/uploadFile/addUploadFileUrl")
    @ResponseBody
    public String addUploadFileUrl(MultipartFile file){
        try {
            if (file.isEmpty()) {
                return "文件为空";
            }
            // 获取文件名
            String fileName = file.getOriginalFilename();
            log.info("上传的文件名为：" + fileName);//写日志
            // 获取文件的后缀名
            String suffixName = fileName.substring(fileName.lastIndexOf("."));
            log.info("文件的后缀名为：" + suffixName);//写日志
            // 设置文件存储路径         *************************************************
            String filePath = "C:\\Users\\Administrator\\Desktop\\a\\";
            String path = filePath + fileName;
            File dest = new File(new File(path).getAbsolutePath());// dist为文件，有多级目录的文件
            // 检测是否存在目录
            if (!dest.getParentFile().exists()) {//因此这里使用.getParentFile()，目的就是取文件前面目录的路径
                dest.getParentFile().mkdirs();// 新建文件夹
            }
            file.transferTo(dest);// 文件写入


            ExcelReaderBuilder readWorkBook = EasyExcel.read(path, BondedImportOrder.class, new OrderListener());


            //通过工作簿对象获得工作表对象,默认是读取第一个
            ExcelReaderSheetBuilder sheet = readWorkBook.sheet();

            //通过工作表对象读取工作表中的内容，每次执行这个方法都要执行一次StudentListener的invoke方法
            //读数据默认从excel的第二行开始读    sheet.headRowNumber(5).doRead(); 可以这样设置从第五行开始读
            sheet.doRead();


            return "上传成功";
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "上传失败";
    }
}
